Agents BuilderのworkflowをChatKitを使う時に外部ツール呼び出しで自前のデータを渡すときにはHTTP経由で渡す
https://gyazo.com/d36f3ee2de1e315a1d503a6242eb3faa
デプロイはChatKitのほうが簡単のようだが、自分とこのAPIを使ってfunction callingする方法がわからなくて詰まっている
自分のサーバーで動かしたいときはAgents SDKを使えと動画では言っている 勘違いしていた
1. Function(Server-side)
Agent Builder内部で処理
自前のAPIエンドポイントにアクセスできない
2. Client Tool(Client-side) ← 必要なのはこちら
onClientToolハンドラーに届く
フロントエンドからHTTP APIを呼び出せる
code:zsh
┌─────────────────────────────────────────────────────────────┐
│ Agent Builder (OpenAI Platform) │
│ │
│ ┌──────────────────┐ │
│ │ Client Tool │ ← これを使う! │
│ │ (Frontend実行) │ onClientTool ハンドラーに届く │
│ └──────────────────┘ │
│ │
│ ┌──────────────────┐ │
│ │ Function │ ← これは使わない │
│ │ (Server実行) │ Agent Builder内部で完結 │
│ └──────────────────┘ 外部APIにアクセスできない │
└─────────────────────────────────────────────────────────────┘
↓
Client Tool呼び出し
↓
┌─────────────────────────────────────────────────────────────┐
│ ブラウザ (chatkit.ts) │
│ │
│ onClientTool: async (invocation) => { │
│ // HTTP APIを呼び出す │
│ fetch('/api/agent-tools/getQuickTaskCandidates', ...) │
│ } │
└─────────────────────────────────────────────────────────────┘
↓
HTTP Request
↓
┌─────────────────────────────────────────────────────────────┐
│ Cloudflare Workers (agent-tools.ts) │
│ │
│ POST /api/agent-tools/getQuickTaskCandidates │
│ → TaskStorageService RPC呼び出し │
└─────────────────────────────────────────────────────────────┘
sdkで組み込まないパターンの場合は常にHTTPエンドポイントでフロントから呼び出す仕様みたい
直接サーバーサイドのコードを実行したい場合はSDKで組み込む必要がある
Claude Sonnet 4.5.icon
ChatKit UIを使いたいならClient Tools(HTTP経由)のみ
ChatKitはUI/UXフレームワークなので、tool実行は常にブラウザ経由になります。
サーバーサイドで完結したいならAgents SDKを使う(ChatKit UI不可)
サーバーサイドで直接実行したい場合は、以前削除したworkflow.tsのようにAgents SDKを直接使う必要がありますが、その場合ChatKit UIは使えません。
functionの戻り値は文字列で返す必要がある
結果は文字列形式でなければなりませんが、そのフォーマットは自由に設定可能です(JSON形式、エラーコード、プレーンテキストなど)。モデルはその文字列を必要に応じて解釈します。
関数に返り値がない場合(例:send_email関数など)は、成功または失敗を示す文字列を返すだけで構いません。(例:"success")